diff(x, y) → cond1(equal(x, y), x, y)
cond1(true, x, y) → 0
cond1(false, x, y) → cond2(gt(x, y), x, y)
cond2(true, x, y) → s(diff(x, s(y)))
cond2(false, x, y) → s(diff(s(x), y))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
↳ QTRS
↳ Overlay + Local Confluence
diff(x, y) → cond1(equal(x, y), x, y)
cond1(true, x, y) → 0
cond1(false, x, y) → cond2(gt(x, y), x, y)
cond2(true, x, y) → s(diff(x, s(y)))
cond2(false, x, y) → s(diff(s(x), y))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
diff(x, y) → cond1(equal(x, y), x, y)
cond1(true, x, y) → 0
cond1(false, x, y) → cond2(gt(x, y), x, y)
cond2(true, x, y) → s(diff(x, s(y)))
cond2(false, x, y) → s(diff(s(x), y))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
diff(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
EQUAL(s(x), s(y)) → EQUAL(x, y)
COND2(true, x, y) → DIFF(x, s(y))
DIFF(x, y) → COND1(equal(x, y), x, y)
GT(s(u), s(v)) → GT(u, v)
COND2(false, x, y) → DIFF(s(x), y)
COND1(false, x, y) → COND2(gt(x, y), x, y)
COND1(false, x, y) → GT(x, y)
DIFF(x, y) → EQUAL(x, y)
diff(x, y) → cond1(equal(x, y), x, y)
cond1(true, x, y) → 0
cond1(false, x, y) → cond2(gt(x, y), x, y)
cond2(true, x, y) → s(diff(x, s(y)))
cond2(false, x, y) → s(diff(s(x), y))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
diff(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
EQUAL(s(x), s(y)) → EQUAL(x, y)
COND2(true, x, y) → DIFF(x, s(y))
DIFF(x, y) → COND1(equal(x, y), x, y)
GT(s(u), s(v)) → GT(u, v)
COND2(false, x, y) → DIFF(s(x), y)
COND1(false, x, y) → COND2(gt(x, y), x, y)
COND1(false, x, y) → GT(x, y)
DIFF(x, y) → EQUAL(x, y)
diff(x, y) → cond1(equal(x, y), x, y)
cond1(true, x, y) → 0
cond1(false, x, y) → cond2(gt(x, y), x, y)
cond2(true, x, y) → s(diff(x, s(y)))
cond2(false, x, y) → s(diff(s(x), y))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
diff(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
EQUAL(s(x), s(y)) → EQUAL(x, y)
diff(x, y) → cond1(equal(x, y), x, y)
cond1(true, x, y) → 0
cond1(false, x, y) → cond2(gt(x, y), x, y)
cond2(true, x, y) → s(diff(x, s(y)))
cond2(false, x, y) → s(diff(s(x), y))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
diff(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
EQUAL(s(x), s(y)) → EQUAL(x, y)
diff(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
diff(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
EQUAL(s(x), s(y)) → EQUAL(x, y)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
GT(s(u), s(v)) → GT(u, v)
diff(x, y) → cond1(equal(x, y), x, y)
cond1(true, x, y) → 0
cond1(false, x, y) → cond2(gt(x, y), x, y)
cond2(true, x, y) → s(diff(x, s(y)))
cond2(false, x, y) → s(diff(s(x), y))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
diff(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
GT(s(u), s(v)) → GT(u, v)
diff(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
diff(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
GT(s(u), s(v)) → GT(u, v)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
COND2(true, x, y) → DIFF(x, s(y))
DIFF(x, y) → COND1(equal(x, y), x, y)
COND2(false, x, y) → DIFF(s(x), y)
COND1(false, x, y) → COND2(gt(x, y), x, y)
diff(x, y) → cond1(equal(x, y), x, y)
cond1(true, x, y) → 0
cond1(false, x, y) → cond2(gt(x, y), x, y)
cond2(true, x, y) → s(diff(x, s(y)))
cond2(false, x, y) → s(diff(s(x), y))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
diff(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
COND2(true, x, y) → DIFF(x, s(y))
DIFF(x, y) → COND1(equal(x, y), x, y)
COND2(false, x, y) → DIFF(s(x), y)
COND1(false, x, y) → COND2(gt(x, y), x, y)
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
diff(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
diff(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
COND2(true, x, y) → DIFF(x, s(y))
DIFF(x, y) → COND1(equal(x, y), x, y)
COND2(false, x, y) → DIFF(s(x), y)
COND1(false, x, y) → COND2(gt(x, y), x, y)
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
(1) (COND1(equal(x34, x35), x34, x35)=COND1(false, x36, x37)∧COND2(gt(x36, x37), x36, x37)=COND2(true, x38, x39) ⇒ COND2(true, x38, x39)≥DIFF(x38, s(x39)))
(2) (equal(x36, x37)=false∧gt(x36, x37)=true ⇒ COND2(true, x36, x37)≥DIFF(x36, s(x37)))
(3) (false=false∧gt(s(x180), 0)=true ⇒ COND2(true, s(x180), 0)≥DIFF(s(x180), s(0)))
(4) (false=false∧gt(0, s(x181))=true ⇒ COND2(true, 0, s(x181))≥DIFF(0, s(s(x181))))
(5) (equal(x182, x183)=false∧gt(s(x182), s(x183))=true∧(equal(x182, x183)=false∧gt(x182, x183)=true ⇒ COND2(true, x182, x183)≥DIFF(x182, s(x183))) ⇒ COND2(true, s(x182), s(x183))≥DIFF(s(x182), s(s(x183))))
(6) (s(x180)=x184∧0=x185∧gt(x184, x185)=true ⇒ COND2(true, s(x180), 0)≥DIFF(s(x180), s(0)))
(7) (0=x191∧s(x181)=x192∧gt(x191, x192)=true ⇒ COND2(true, 0, s(x181))≥DIFF(0, s(s(x181))))
(8) (equal(x182, x183)=false∧s(x182)=x198∧s(x183)=x199∧gt(x198, x199)=true∧(equal(x182, x183)=false∧gt(x182, x183)=true ⇒ COND2(true, x182, x183)≥DIFF(x182, s(x183))) ⇒ COND2(true, s(x182), s(x183))≥DIFF(s(x182), s(s(x183))))
(9) (true=true∧s(x180)=s(x187)∧0=0 ⇒ COND2(true, s(x180), 0)≥DIFF(s(x180), s(0)))
(10) (gt(x188, x189)=true∧s(x180)=s(x188)∧0=s(x189)∧(∀x190:gt(x188, x189)=true∧s(x190)=x188∧0=x189 ⇒ COND2(true, s(x190), 0)≥DIFF(s(x190), s(0))) ⇒ COND2(true, s(x180), 0)≥DIFF(s(x180), s(0)))
(11) (COND2(true, s(x180), 0)≥DIFF(s(x180), s(0)))
(12) (true=true∧0=s(x194)∧s(x181)=0 ⇒ COND2(true, 0, s(x181))≥DIFF(0, s(s(x181))))
(13) (gt(x195, x196)=true∧0=s(x195)∧s(x181)=s(x196)∧(∀x197:gt(x195, x196)=true∧0=x195∧s(x197)=x196 ⇒ COND2(true, 0, s(x197))≥DIFF(0, s(s(x197)))) ⇒ COND2(true, 0, s(x181))≥DIFF(0, s(s(x181))))
(14) (true=true∧equal(x182, x183)=false∧s(x182)=s(x201)∧s(x183)=0∧(equal(x182, x183)=false∧gt(x182, x183)=true ⇒ COND2(true, x182, x183)≥DIFF(x182, s(x183))) ⇒ COND2(true, s(x182), s(x183))≥DIFF(s(x182), s(s(x183))))
(15) (gt(x202, x203)=true∧equal(x182, x183)=false∧s(x182)=s(x202)∧s(x183)=s(x203)∧(equal(x182, x183)=false∧gt(x182, x183)=true ⇒ COND2(true, x182, x183)≥DIFF(x182, s(x183)))∧(∀x204,x205:gt(x202, x203)=true∧equal(x204, x205)=false∧s(x204)=x202∧s(x205)=x203∧(equal(x204, x205)=false∧gt(x204, x205)=true ⇒ COND2(true, x204, x205)≥DIFF(x204, s(x205))) ⇒ COND2(true, s(x204), s(x205))≥DIFF(s(x204), s(s(x205)))) ⇒ COND2(true, s(x182), s(x183))≥DIFF(s(x182), s(s(x183))))
(16) (gt(x202, x203)=true∧equal(x202, x203)=false∧(equal(x202, x203)=false∧gt(x202, x203)=true ⇒ COND2(true, x202, x203)≥DIFF(x202, s(x203)))∧(∀x204,x205:gt(x202, x203)=true∧equal(x204, x205)=false∧s(x204)=x202∧s(x205)=x203∧(equal(x204, x205)=false∧gt(x204, x205)=true ⇒ COND2(true, x204, x205)≥DIFF(x204, s(x205))) ⇒ COND2(true, s(x204), s(x205))≥DIFF(s(x204), s(s(x205)))) ⇒ COND2(true, s(x202), s(x203))≥DIFF(s(x202), s(s(x203))))
(17) (COND2(true, x202, x203)≥DIFF(x202, s(x203))∧(∀x204,x205:gt(x202, x203)=true∧equal(x204, x205)=false∧s(x204)=x202∧s(x205)=x203∧(equal(x204, x205)=false∧gt(x204, x205)=true ⇒ COND2(true, x204, x205)≥DIFF(x204, s(x205))) ⇒ COND2(true, s(x204), s(x205))≥DIFF(s(x204), s(s(x205)))) ⇒ COND2(true, s(x202), s(x203))≥DIFF(s(x202), s(s(x203))))
(18) (COND2(true, x202, x203)≥DIFF(x202, s(x203)) ⇒ COND2(true, s(x202), s(x203))≥DIFF(s(x202), s(s(x203))))
(19) (COND2(gt(x50, x51), x50, x51)=COND2(true, x52, x53)∧DIFF(x52, s(x53))=DIFF(x54, x55) ⇒ DIFF(x54, x55)≥COND1(equal(x54, x55), x54, x55))
(20) (gt(x50, x51)=true ⇒ DIFF(x50, s(x51))≥COND1(equal(x50, s(x51)), x50, s(x51)))
(21) (true=true ⇒ DIFF(s(x207), s(0))≥COND1(equal(s(x207), s(0)), s(x207), s(0)))
(22) (gt(x208, x209)=true∧(gt(x208, x209)=true ⇒ DIFF(x208, s(x209))≥COND1(equal(x208, s(x209)), x208, s(x209))) ⇒ DIFF(s(x208), s(s(x209)))≥COND1(equal(s(x208), s(s(x209))), s(x208), s(s(x209))))
(23) (DIFF(s(x207), s(0))≥COND1(equal(s(x207), s(0)), s(x207), s(0)))
(24) (DIFF(x208, s(x209))≥COND1(equal(x208, s(x209)), x208, s(x209)) ⇒ DIFF(s(x208), s(s(x209)))≥COND1(equal(s(x208), s(s(x209))), s(x208), s(s(x209))))
(25) (COND2(gt(x74, x75), x74, x75)=COND2(false, x76, x77)∧DIFF(s(x76), x77)=DIFF(x78, x79) ⇒ DIFF(x78, x79)≥COND1(equal(x78, x79), x78, x79))
(26) (gt(x74, x75)=false ⇒ DIFF(s(x74), x75)≥COND1(equal(s(x74), x75), s(x74), x75))
(27) (false=false ⇒ DIFF(s(0), x210)≥COND1(equal(s(0), x210), s(0), x210))
(28) (gt(x212, x213)=false∧(gt(x212, x213)=false ⇒ DIFF(s(x212), x213)≥COND1(equal(s(x212), x213), s(x212), x213)) ⇒ DIFF(s(s(x212)), s(x213))≥COND1(equal(s(s(x212)), s(x213)), s(s(x212)), s(x213)))
(29) (DIFF(s(0), x210)≥COND1(equal(s(0), x210), s(0), x210))
(30) (DIFF(s(x212), x213)≥COND1(equal(s(x212), x213), s(x212), x213) ⇒ DIFF(s(s(x212)), s(x213))≥COND1(equal(s(s(x212)), s(x213)), s(s(x212)), s(x213)))
(31) (COND1(equal(x124, x125), x124, x125)=COND1(false, x126, x127)∧COND2(gt(x126, x127), x126, x127)=COND2(false, x128, x129) ⇒ COND2(false, x128, x129)≥DIFF(s(x128), x129))
(32) (equal(x126, x127)=false∧gt(x126, x127)=false ⇒ COND2(false, x126, x127)≥DIFF(s(x126), x127))
(33) (false=false∧gt(s(x214), 0)=false ⇒ COND2(false, s(x214), 0)≥DIFF(s(s(x214)), 0))
(34) (false=false∧gt(0, s(x215))=false ⇒ COND2(false, 0, s(x215))≥DIFF(s(0), s(x215)))
(35) (equal(x216, x217)=false∧gt(s(x216), s(x217))=false∧(equal(x216, x217)=false∧gt(x216, x217)=false ⇒ COND2(false, x216, x217)≥DIFF(s(x216), x217)) ⇒ COND2(false, s(x216), s(x217))≥DIFF(s(s(x216)), s(x217)))
(36) (s(x214)=x218∧0=x219∧gt(x218, x219)=false ⇒ COND2(false, s(x214), 0)≥DIFF(s(s(x214)), 0))
(37) (0=x225∧s(x215)=x226∧gt(x225, x226)=false ⇒ COND2(false, 0, s(x215))≥DIFF(s(0), s(x215)))
(38) (equal(x216, x217)=false∧s(x216)=x232∧s(x217)=x233∧gt(x232, x233)=false∧(equal(x216, x217)=false∧gt(x216, x217)=false ⇒ COND2(false, x216, x217)≥DIFF(s(x216), x217)) ⇒ COND2(false, s(x216), s(x217))≥DIFF(s(s(x216)), s(x217)))
(39) (false=false∧s(x214)=0∧0=x220 ⇒ COND2(false, s(x214), 0)≥DIFF(s(s(x214)), 0))
(40) (gt(x222, x223)=false∧s(x214)=s(x222)∧0=s(x223)∧(∀x224:gt(x222, x223)=false∧s(x224)=x222∧0=x223 ⇒ COND2(false, s(x224), 0)≥DIFF(s(s(x224)), 0)) ⇒ COND2(false, s(x214), 0)≥DIFF(s(s(x214)), 0))
(41) (false=false∧0=0∧s(x215)=x227 ⇒ COND2(false, 0, s(x215))≥DIFF(s(0), s(x215)))
(42) (gt(x229, x230)=false∧0=s(x229)∧s(x215)=s(x230)∧(∀x231:gt(x229, x230)=false∧0=x229∧s(x231)=x230 ⇒ COND2(false, 0, s(x231))≥DIFF(s(0), s(x231))) ⇒ COND2(false, 0, s(x215))≥DIFF(s(0), s(x215)))
(43) (COND2(false, 0, s(x215))≥DIFF(s(0), s(x215)))
(44) (false=false∧equal(x216, x217)=false∧s(x216)=0∧s(x217)=x234∧(equal(x216, x217)=false∧gt(x216, x217)=false ⇒ COND2(false, x216, x217)≥DIFF(s(x216), x217)) ⇒ COND2(false, s(x216), s(x217))≥DIFF(s(s(x216)), s(x217)))
(45) (gt(x236, x237)=false∧equal(x216, x217)=false∧s(x216)=s(x236)∧s(x217)=s(x237)∧(equal(x216, x217)=false∧gt(x216, x217)=false ⇒ COND2(false, x216, x217)≥DIFF(s(x216), x217))∧(∀x238,x239:gt(x236, x237)=false∧equal(x238, x239)=false∧s(x238)=x236∧s(x239)=x237∧(equal(x238, x239)=false∧gt(x238, x239)=false ⇒ COND2(false, x238, x239)≥DIFF(s(x238), x239)) ⇒ COND2(false, s(x238), s(x239))≥DIFF(s(s(x238)), s(x239))) ⇒ COND2(false, s(x216), s(x217))≥DIFF(s(s(x216)), s(x217)))
(46) (gt(x236, x237)=false∧equal(x236, x237)=false∧(equal(x236, x237)=false∧gt(x236, x237)=false ⇒ COND2(false, x236, x237)≥DIFF(s(x236), x237))∧(∀x238,x239:gt(x236, x237)=false∧equal(x238, x239)=false∧s(x238)=x236∧s(x239)=x237∧(equal(x238, x239)=false∧gt(x238, x239)=false ⇒ COND2(false, x238, x239)≥DIFF(s(x238), x239)) ⇒ COND2(false, s(x238), s(x239))≥DIFF(s(s(x238)), s(x239))) ⇒ COND2(false, s(x236), s(x237))≥DIFF(s(s(x236)), s(x237)))
(47) (COND2(false, x236, x237)≥DIFF(s(x236), x237)∧(∀x238,x239:gt(x236, x237)=false∧equal(x238, x239)=false∧s(x238)=x236∧s(x239)=x237∧(equal(x238, x239)=false∧gt(x238, x239)=false ⇒ COND2(false, x238, x239)≥DIFF(s(x238), x239)) ⇒ COND2(false, s(x238), s(x239))≥DIFF(s(s(x238)), s(x239))) ⇒ COND2(false, s(x236), s(x237))≥DIFF(s(s(x236)), s(x237)))
(48) (COND2(false, x236, x237)≥DIFF(s(x236), x237) ⇒ COND2(false, s(x236), s(x237))≥DIFF(s(s(x236)), s(x237)))
(49) (DIFF(x144, s(x145))=DIFF(x146, x147)∧COND1(equal(x146, x147), x146, x147)=COND1(false, x148, x149) ⇒ COND1(false, x148, x149)≥COND2(gt(x148, x149), x148, x149))
(50) (s(x145)=x147∧equal(x146, x147)=false ⇒ COND1(false, x146, x147)≥COND2(gt(x146, x147), x146, x147))
(51) (false=false∧s(x145)=0 ⇒ COND1(false, s(x240), 0)≥COND2(gt(s(x240), 0), s(x240), 0))
(52) (false=false∧s(x145)=s(x241) ⇒ COND1(false, 0, s(x241))≥COND2(gt(0, s(x241)), 0, s(x241)))
(53) (equal(x242, x243)=false∧s(x145)=s(x243)∧(∀x244:equal(x242, x243)=false∧s(x244)=x243 ⇒ COND1(false, x242, x243)≥COND2(gt(x242, x243), x242, x243)) ⇒ COND1(false, s(x242), s(x243))≥COND2(gt(s(x242), s(x243)), s(x242), s(x243)))
(54) (COND1(false, 0, s(x145))≥COND2(gt(0, s(x145)), 0, s(x145)))
(55) (equal(x242, x243)=false ⇒ COND1(false, s(x242), s(x243))≥COND2(gt(s(x242), s(x243)), s(x242), s(x243)))
(56) (false=false ⇒ COND1(false, s(s(x245)), s(0))≥COND2(gt(s(s(x245)), s(0)), s(s(x245)), s(0)))
(57) (false=false ⇒ COND1(false, s(0), s(s(x246)))≥COND2(gt(s(0), s(s(x246))), s(0), s(s(x246))))
(58) (equal(x247, x248)=false∧(equal(x247, x248)=false ⇒ COND1(false, s(x247), s(x248))≥COND2(gt(s(x247), s(x248)), s(x247), s(x248))) ⇒ COND1(false, s(s(x247)), s(s(x248)))≥COND2(gt(s(s(x247)), s(s(x248))), s(s(x247)), s(s(x248))))
(59) (COND1(false, s(s(x245)), s(0))≥COND2(gt(s(s(x245)), s(0)), s(s(x245)), s(0)))
(60) (COND1(false, s(0), s(s(x246)))≥COND2(gt(s(0), s(s(x246))), s(0), s(s(x246))))
(61) (COND1(false, s(x247), s(x248))≥COND2(gt(s(x247), s(x248)), s(x247), s(x248)) ⇒ COND1(false, s(s(x247)), s(s(x248)))≥COND2(gt(s(s(x247)), s(s(x248))), s(s(x247)), s(s(x248))))
(62) (DIFF(s(x152), x153)=DIFF(x154, x155)∧COND1(equal(x154, x155), x154, x155)=COND1(false, x156, x157) ⇒ COND1(false, x156, x157)≥COND2(gt(x156, x157), x156, x157))
(63) (s(x152)=x154∧equal(x154, x155)=false ⇒ COND1(false, x154, x155)≥COND2(gt(x154, x155), x154, x155))
(64) (false=false∧s(x152)=s(x249) ⇒ COND1(false, s(x249), 0)≥COND2(gt(s(x249), 0), s(x249), 0))
(65) (false=false∧s(x152)=0 ⇒ COND1(false, 0, s(x250))≥COND2(gt(0, s(x250)), 0, s(x250)))
(66) (equal(x251, x252)=false∧s(x152)=s(x251)∧(∀x253:equal(x251, x252)=false∧s(x253)=x251 ⇒ COND1(false, x251, x252)≥COND2(gt(x251, x252), x251, x252)) ⇒ COND1(false, s(x251), s(x252))≥COND2(gt(s(x251), s(x252)), s(x251), s(x252)))
(67) (COND1(false, s(x152), 0)≥COND2(gt(s(x152), 0), s(x152), 0))
(68) (equal(x251, x252)=false ⇒ COND1(false, s(x251), s(x252))≥COND2(gt(s(x251), s(x252)), s(x251), s(x252)))
(69) (false=false ⇒ COND1(false, s(s(x254)), s(0))≥COND2(gt(s(s(x254)), s(0)), s(s(x254)), s(0)))
(70) (false=false ⇒ COND1(false, s(0), s(s(x255)))≥COND2(gt(s(0), s(s(x255))), s(0), s(s(x255))))
(71) (equal(x256, x257)=false∧(equal(x256, x257)=false ⇒ COND1(false, s(x256), s(x257))≥COND2(gt(s(x256), s(x257)), s(x256), s(x257))) ⇒ COND1(false, s(s(x256)), s(s(x257)))≥COND2(gt(s(s(x256)), s(s(x257))), s(s(x256)), s(s(x257))))
(72) (COND1(false, s(s(x254)), s(0))≥COND2(gt(s(s(x254)), s(0)), s(s(x254)), s(0)))
(73) (COND1(false, s(0), s(s(x255)))≥COND2(gt(s(0), s(s(x255))), s(0), s(s(x255))))
(74) (COND1(false, s(x256), s(x257))≥COND2(gt(s(x256), s(x257)), s(x256), s(x257)) ⇒ COND1(false, s(s(x256)), s(s(x257)))≥COND2(gt(s(s(x256)), s(s(x257))), s(s(x256)), s(s(x257))))
POL(0) = 0
POL(COND1(x1, x2, x3)) = 1 + 2·x1·x2 - 2·x1·x3 + x12 - 2·x2·x3 + x22 + x32
POL(COND2(x1, x2, x3)) = 1 + 2·x1·x2 - 2·x1·x3 + x12 - 2·x2·x3 + x22 + x32
POL(DIFF(x1, x2)) = 1 - 2·x1·x2 + x12 + x22
POL(c) = -1
POL(equal(x1, x2)) = 0
POL(false) = 0
POL(gt(x1, x2)) = 0
POL(s(x1)) = 1 + x1
POL(true) = 0
The following pairs are in Pbound:
COND2(true, x, y) → DIFF(x, s(y))
COND2(false, x, y) → DIFF(s(x), y)
The following rules are usable:
COND2(true, x, y) → DIFF(x, s(y))
DIFF(x, y) → COND1(equal(x, y), x, y)
COND2(false, x, y) → DIFF(s(x), y)
COND1(false, x, y) → COND2(gt(x, y), x, y)
gt(s(u), s(v)) ↔ gt(u, v)
gt(s(u), 0) ↔ true
gt(0, v) ↔ false
equal(s(x), s(y)) ↔ equal(x, y)
equal(s(x), 0) ↔ false
equal(0, s(y)) ↔ false
equal(0, 0) ↔ true
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ DependencyGraphProof
DIFF(x, y) → COND1(equal(x, y), x, y)
COND1(false, x, y) → COND2(gt(x, y), x, y)
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))